package com.djinfo.work.dao.impl;
import com.djinfo.work.common.dao.impl.BaseDaoImpl;
import com.djinfo.work.common.util.StringUtil;
import com.djinfo.work.dao.MessagesDao;
import com.djinfo.work.entity.SysMessageEntity;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.springframework.stereotype.Repository;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;


/**
 * 消息
 */
@Repository("MessagesDao")
public class MessagesDaoImpl extends BaseDaoImpl implements MessagesDao {
	@Override
	public SysMessageEntity getMessagesById(String id) {
		return (SysMessageEntity)super.getByPrimaryKey(SysMessageEntity.class,id);
	}

	@Override
	public List<SysMessageEntity> page(SysMessageEntity sysMessageEntity, Integer pageNum, Integer pageSize) {
		String hql="";
		if(StringUtil.isNotEmpty(sysMessageEntity.getTitle())||StringUtil.isNotEmpty(sysMessageEntity.getType())||StringUtil.isNotEmpty(sysMessageEntity.getStatus())){
			if(sysMessageEntity.getType()==null&& sysMessageEntity.getStatus()==null&&StringUtil.isNotEmpty(sysMessageEntity.getTitle())){
				hql ="from SysMessageEntity where title like '%"+ sysMessageEntity.getTitle()+ "%'";
			} else if(("").equals(sysMessageEntity.getTitle()) && sysMessageEntity.getStatus()==null&&StringUtil.isNotEmpty(sysMessageEntity.getType())){
				hql = "from SysMessageEntity where type=" + sysMessageEntity.getType() + "";
			}else if(("").equals(sysMessageEntity.getTitle()) && sysMessageEntity.getType()==null&&StringUtil.isNotEmpty(sysMessageEntity.getStatus())){
				hql = "from SysMessageEntity where status=" + sysMessageEntity.getStatus() + "";
			}else  if(sysMessageEntity.getStatus()==null&&StringUtil.isNotEmpty(sysMessageEntity.getTitle())&&StringUtil.isNotEmpty(sysMessageEntity.getType())){
				hql = "from SysMessageEntity where title  like '%"+ sysMessageEntity.getTitle()+ "%' and type=" + sysMessageEntity.getType() + "";
			}else if(sysMessageEntity.getType()==null&&StringUtil.isNotEmpty(sysMessageEntity.getTitle())&&StringUtil.isNotEmpty(sysMessageEntity.getStatus())){
				hql = "from SysMessageEntity where title  like '%"+ sysMessageEntity.getTitle()+ "%' and status=" + sysMessageEntity.getStatus() + "";
			}else if(("").equals(sysMessageEntity.getTitle()) &&StringUtil.isNotEmpty(sysMessageEntity.getType())&&StringUtil.isNotEmpty(sysMessageEntity.getStatus())){
				hql = "from SysMessageEntity where  type= "+ sysMessageEntity.getType()+ " and status=" + sysMessageEntity.getStatus() + "";
			}else  if(StringUtil.isNotEmpty(sysMessageEntity.getTitle())&&StringUtil.isNotEmpty(sysMessageEntity.getType())&&StringUtil.isNotEmpty(sysMessageEntity.getStatus())){
				hql = "from SysMessageEntity where title  like '%"+ sysMessageEntity.getTitle()+ "%' and type=" + sysMessageEntity.getType() + " and status=" + sysMessageEntity.getStatus() + "";
			}

		}else{
			hql = " from SysMessageEntity where 1=1 ";
		}

		return (List<SysMessageEntity>)super.pageQuery( hql,  pageNum,  pageSize);
	}

	@Override
	public List<SysMessageEntity> list() {
		String hql = " from SysMessageEntity where 1=1 ";
		return (List<SysMessageEntity>)super.getList(hql);
	}

	@Override
	public Integer getAllRowCount() {
		String hql = "select count(*) from SysMessageEntity ";
		return super.getUniqueObject(hql).hashCode();
	}

	@Override
	public Integer getCountBy(SysMessageEntity sysMessageEntity) {
		String hql="";
		if(StringUtil.isNotEmpty(sysMessageEntity.getTitle())||StringUtil.isNotEmpty(sysMessageEntity.getType())||StringUtil.isNotEmpty(sysMessageEntity.getStatus())){
			if(sysMessageEntity.getType()==null&& sysMessageEntity.getStatus()==null&&StringUtil.isNotEmpty(sysMessageEntity.getTitle())){
				hql ="select count(*) from SysMessageEntity where title like '%"+ sysMessageEntity.getTitle()+ "%'";
			} else if(("").equals(sysMessageEntity.getTitle()) && sysMessageEntity.getStatus()==null&&StringUtil.isNotEmpty(sysMessageEntity.getType())){
				hql = "select count(*) from SysMessageEntity where type=" + sysMessageEntity.getType() + "";
			} else if(("").equals(sysMessageEntity.getTitle()) && sysMessageEntity.getType()==null&&StringUtil.isNotEmpty(sysMessageEntity.getStatus())){
				hql = "select count(*) from SysMessageEntity where status=" + sysMessageEntity.getStatus() + "";
			} else if(sysMessageEntity.getStatus()==null&&StringUtil.isNotEmpty(sysMessageEntity.getTitle())&&StringUtil.isNotEmpty(sysMessageEntity.getType())){
				hql = "select count(*) from SysMessageEntity where title  like '%"+ sysMessageEntity.getTitle()+ "%' and type=" + sysMessageEntity.getType() + "";
			} else if(sysMessageEntity.getType()==null&&StringUtil.isNotEmpty(sysMessageEntity.getTitle())&&StringUtil.isNotEmpty(sysMessageEntity.getStatus())){
				hql = "select count(*) from SysMessageEntity where title  like '%"+ sysMessageEntity.getTitle()+ "%' and status=" + sysMessageEntity.getStatus() + "";
			} else if(("").equals(sysMessageEntity.getTitle()) &&StringUtil.isNotEmpty(sysMessageEntity.getType())&&StringUtil.isNotEmpty(sysMessageEntity.getStatus())){
				hql = "select count(*) from SysMessageEntity where  type= "+ sysMessageEntity.getType()+ " and status=" + sysMessageEntity.getStatus() + "";
			} else if(StringUtil.isNotEmpty(sysMessageEntity.getTitle())&&StringUtil.isNotEmpty(sysMessageEntity.getType())&&StringUtil.isNotEmpty(sysMessageEntity.getStatus())){
				hql = "select count(*) from SysMessageEntity where title  like '%"+ sysMessageEntity.getTitle()+ "%' and type=" + sysMessageEntity.getType() + " and status=" + sysMessageEntity.getStatus() + "";
			}
		}
		return super.getUniqueObject(hql).hashCode();
	}

	@Override
	public List<SysMessageEntity> myPage(SysMessageEntity object, Integer pageNum, Integer pageSize) {
		String hql = " FROM  SysMessageEntity where 1=1 ";
		if(StringUtil.isNotEmpty(object.getReceiveObject())){
			hql += " and  ( receiveObject  like '%"+ object.getReceiveObject()+ "%' or publish = '" + object.getPublish() + "' ) ";
		}
		if(StringUtil.isNotEmpty(object.getTitle())){
			hql += " and  title  like '%"+ object.getTitle()+ "%'";
		}
		if(StringUtil.isNotEmpty(object.getType())){
			hql += " and  type  = "+ object.getType()+ "";
		}
		if(StringUtil.isNotEmpty(object.getStatus())){
			hql += " and  status  ="+ object.getStatus()+ "";
		}
		return (List<SysMessageEntity>)super.pageQuery( hql,  pageNum,  pageSize);
	}

	@Override
	public Integer getMyCount(SysMessageEntity sysMessageEntity) {
		String hql = " select count(*) from  SysMessageEntity where 1=1 ";
		if(StringUtil.isNotEmpty(sysMessageEntity.getReceiveObject())){
			hql += " and  ( receiveObject  like '%"+ sysMessageEntity.getReceiveObject()+ "%' or publish = '" + sysMessageEntity.getPublish() + "' ) ";
		}
		if(StringUtil.isNotEmpty(sysMessageEntity.getTitle())){
			hql += " and  title  like '%"+ sysMessageEntity.getTitle()+ "%'";
		}
		if(StringUtil.isNotEmpty(sysMessageEntity.getType())){
			hql += " and  type  = "+ sysMessageEntity.getType()+ "";
		}
		if(StringUtil.isNotEmpty(sysMessageEntity.getStatus())){
			hql += " and  status  ="+ sysMessageEntity.getStatus()+ "";
		}
		return super.getUniqueObject(hql).hashCode();
	}

	@Override
	public Integer getMessageNum(String userID) {
		String hql = " select count(*) from  SysMessageEntity where receiveObject  like '%"+ userID+ "%' and readTime=''";
		return super.getUniqueObject(hql).hashCode();
	}

	@Override
	public List<SysMessageEntity> getsysmess(String userID) {
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
		String date = df.format(new Date());
		DateTime dt = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").parseDateTime(date);
		String frontTime = dt.plusSeconds(-20).toString("yyyy-MM-dd HH:mm:ss");
		List<SysMessageEntity> sysMessageEntityList =null;
		try {
			String hql = "from SysMessageEntity where receiveObject  like '%"+userID+ "%' and readTime='' and  createTime >'"+frontTime+"' and createTime <='"+date+"'";
			sysMessageEntityList = super.getList(hql);
		}catch (Exception e1){
			e1.printStackTrace();
		}
		return sysMessageEntityList;
	}
}

